'''
登录
退出
查询余额
取钱
存钱
'''
acct_list = [{'account number': 1, 'password': 123456, 'statement': 1000},
             {'account number': 2, 'password': 123456, 'statement': 2000},
             {'account number': 3, 'password': 123456, 'statement': 3000}]


def login(acct_num=1):
    '''
    登录
    :param acct_dict: 对应账号信息
    :return i:对应帐号在列表的位置,如果为 exited 则退出系统
    '''
    # 检测帐号是否存在于系统中
    flags = 0

    # 查找帐号并且匹配密码
    for i, acc_dict in enumerate(acct_list):

        #帐号匹配
        if acct_num == acc_dict['account number']:
            flags = 1
            print('=' * 40)
            key = int(input('请输入密码（默认密码为123456）: '))
            #输入密码正确 显示菜单
            if key == acc_dict['password']:
                print('=' * 12, '登录成功', '=' * 12)
                print('{:10}{}'.format('1. 查询余额', '2. 取钱'))
                print('{:10}{}'.format('3. 存钱', '4. 退出'))
                return i
            #密码错误 重新输入或退出
            else:
                print('=' * 12, '密码错误', '=' * 12)
                print('再次输入请按 1, 退出系统请按 2')
                print('=' * 40)
                key = int(input('请输入: '))
                if key == 1:
                    print('=' * 40)
                    acct_num = int(input('请输入账号： '))
                    login(acct_num)
                else:
                    print('=' * 12, '系统已退出', '=' * 12)
                    return 'exited'
    # 该账号不存在
    if flags == 0:
        print('=' * 12, '该账号不存在', '=' * 12)
        print('=' * 12, '系统已退出', '=' * 12)
        return 'exited'


def show_acc(index):
    '''
    查询余额
    index: 对应帐号位置
    :return key: 系统状态: 1为保持 exited为退出
    '''
    #显示余额
    print('=' * 40)
    print('该账户余额为：', acct_list[index]['statement'])
    print('=' * 40)
    print('返回请输入1，退出请输入2')
    key = int(input('请输入：'))
    #返回系统
    if key == 1:
        '''
        此处打印无法对齐,尝试加入chr12288解决但是无效
        麻烦助教帮解决下
        '''
        print('{:10}{}'.format('1. 查询余额', '2. 取钱'))
        print('{:10}{}'.format('3. 存钱', '4. 退出'))
        return key
    #退出系统
    else:
        print('=' * 12, '系统已退出', '=' * 12)
        return 'exited'


def pick_money(amount, index):
    '''

    :param amount: 取钱数量
    :param index:  帐号对应位置
    :return: key: 系统状态: 1为保持 exited为退出
    '''
    #检测余额是否足够
    if acct_list[index]['statement'] - amount < 0:
        print('=' * 12, '余额不足', '=' * 12)
        print('返回请输入1，退出请输入2')
        key = int(input('请输入：'))
    else:
        #扣除帐号取钱数量
        acct_list[index]['statement'] = acct_list[index]['statement'] - amount
        print('=' * 12, '取钱成功', '=' * 12)
        print('当前余额为：', acct_list[index]['statement'])
        print('=' * 40)
        print('返回请输入1，退出请输入2')
        key = int(input('请输入：'))
    #返回界面
    if key == 1:
        print('{:10}{}'.format('1. 查询余额', '2. 取钱'))
        print('{:10}{}'.format('3. 存钱', '4. 退出'))
        return key
    #退出
    else:
        print('=' * 12, '系统已退出', '=' * 12)
        return 'exited'


def save_money(amount, index):
    '''

    :param amount: 存钱数量
    :param index:  帐号对应位置
    :return: key: 系统状态: 1为保持 exited为退出
    '''
    # 添加金额
    acct_list[index]['statement'] = acct_list[index]['statement'] + amount
    print('=' * 12, '存钱成功', '=' * 12)
    print('当前余额为：', acct_list[index]['statement'])
    print('=' * 40)
    print('返回请输入1，退出请输入2')
    key = int(input('请输入：'))
    #返回界面
    if key == 1:
        print('{:10}{}'.format('1. 查询余额', '2. 取钱'))
        print('{:10}{}'.format('3. 存钱', '4. 退出'))
        return key
    #退出
    else:
        print('=' * 12, '系统已退出', '=' * 12)
        return 'exited'


#模拟
while True:
    print('=' * 40)
    acc_num = int(input('请输入你的账号（默认为数字一到三）：'))
    #登录界面
    index = login(acc_num)
    if 'exited' == index:
        break
    print('=' * 40)
    #进行操作
    choice = int(input('请输入你的选择：'))
    while True:
        #显示余额
        if choice == 1:
            key = show_acc(index)
            if 'exited' == key:
                break
            else:
                choice = int(input('请输入你的选择：'))
        #取钱
        elif choice == 2:
            amount = int(input('取钱数量：'))
            key = pick_money(amount, index)
            if 'exited' == key:
                break
            else:
                choice = int(input('请输入你的选择：'))
        #存钱
        elif choice == 3:
            amount = int(input('存钱数量：'))
            key = save_money(amount, index)
            if 'exited' == key:
                break
            else:
                choice = int(input('请输入你的选择：'))
        #退出
        elif choice == 4:
            print('=' * 12, '系统已退出', '=' * 12)
            break
    break
